<?php
    @header("Content-Type:text/html;charset=utf-8"); // 接口返回给前端数据类型

    // 链接数据库
    const host = "localhost";
    const user = "root";
    const pwd = "root";
    const dbName = "2101";
  
    $conn = mysqli_connect(host,user,pwd,dbName);

    if(!$conn){
        exit("数据库链接失败");
    }

    // 设置字符串编码 (转码设置)
    mysqli_query($conn,"set names utf8"); // 从数据库取数据时  将编码转为utf-8;  
    mysqli_query($conn,"set character set utf-8"); // 向数据库存数据时  将编码转为utf-8

    // mysqli_query($conn,sql);   执行传入的sql语句
    // $conn 链接对象
    // sql   执行的sql语句

    // ---------------------------------查询----------------------------------------------


    // 执行查询语句
    $search  = "select id,name,class,chinese,math,english,chinese+math+english as total from `grade` limit 0,5";

    // mysqli_query($conn,sql);   执行传入的sql语句    查询 => 成功:结果对象(包含结果但是需要解析)  失败:false (sql语句有误)
    $result = mysqli_query($conn,$search);
 
    // print_r($result);

    // mysqli_fetch_array($result)   =>解析传入的结果对象  成功:返回解析的数据->数组( 数值数组+关联数组)  失败:false
    //  mysqli_fetch_assoc($result)   =>解析传入的结果对象  成功:返回解析的数据->数组(关联数组)  失败:false

    // mysqli_fetch_array(),mysqli_fetch_assoc() 一次只解析一条


    //  如果已知循环次数 用for循环 , 不知道 while

    // for 
    // $list = array();
    // for($i=0;$i<$result->num_rows;$i++){
    //     $item = mysqli_fetch_assoc($result);
    //     // print_r($item);
    //     // echo "<br>";

    //     array_push($list,$item);
    // }


    //循环解析数据  先解析 在将结果赋值给$item
    // 解析成功 => 解析的数据 => 继续解析
    // 解析失败 => false    =>跳出循环
    $list = array();
    while($item = mysqli_fetch_assoc($result)){  
        array_push($list,$item);
    }


    // echo json_encode($list);

    // 数据处理  
    $msg = array();
    if(count($list)>0){ //count($list)  list.length>0 返回数组的长度
        // echo json_encode($item);
        $msg["status"] = true; 
        $msg["detail"] = "ok"; 
        $msg["list"] = $list; 
    }else{
        $msg["status"] = false; 
        $msg["detail"] = "not found"; 
        $msg["list"] = array(); 
    }

    echo json_encode($msg);


    /* {
        status:true,
        detail:"查询成功",
        data
    } */


    // 单数据  => 直接解析
    // 多数据  => 循环解析 => 放到数组中

?>